// 导入头部导航栏组件
import navbar from '../components/navbar.vue'
// 导入面经分享组件
import shareList from '../views/home/find/shareList.vue'
// 导入 dayjs
import dayjs from 'dayjs'
// 导入插件
import relativeTime from 'dayjs/plugin/relativeTime'
// 导入语言包
import 'dayjs/locale/zh-cn'
// 导入vuex
import store from '../store/index.js'
// 导入token工具函数
import { getToken } from './token.js'
// 导入vant轻提示组件
import { Toast } from 'vant'
// 导入路由工具
import router from '../router/index.js'
// 组件语言包和扩展插件需要等到其他工具函数全部导入后再导入
// 使用语言包
dayjs.locale('zh-cn')
// 扩展插件
dayjs.extend(relativeTime)

// 设置全局插件
const plugin = {}

// 设置install方法
plugin.install = function (Vue) {
  // 在这里注册全局插件
  Vue.component('navbar', navbar)
  Vue.component('shareList', shareList)
  // 将 dayjs 封装为一个全局过滤器：用来将时间从固定时间转为相对时间
  Vue.filter('getTime', function (value) {
    return dayjs().to(dayjs(value))
  })
  // 封装全局判断登录的函数
  Vue.prototype.$isLogin = function () {
    // 通过vuex中的state中的isLogin属性判断其中是否有数据
    if (!store.state.isLogin) {
      // 先判断是否登录(通过token判断)
      const token = getToken()
      if (token) {
        // 重新获取数据,并修改登录状态
        store.dispatch('upDateUser')
        store.commit('setIsLogin', true)
        return true
      } else {
        Toast.fail('请先登录!')
        // 跳转路由到登录页面
        router.push('/login?to_path=' + window.location.href.split('#')[1])
        return false
      }
    } else {
      // vuex中有信息,则直接向下执行
      return true
    }
  }
}

// 将插件暴露出去
export default plugin
